package jhlee42;

import java.util.Scanner;

public class ch03_164_04 {
	public static void main(String[] args) {
		
		/***코드 풀이***/
//		둘 중에 하나가 소수이면, 더이상 볼 것없이 곱해주면 된다. 
//		두 개의 조건문을 모두 들어가야.. 공약수가 존재한다.
//		처음에 받아온 number_1,2 이외에 number_1_unchangeable을 넣은 이유는
//		공약수 존재시 number_1의 값이 계속 변화 하기 때문에, 초기 값에 대한 회전수를 정해주기 위해서 이다.
//		
//		처음 값에 약수가 존재한다면, 그 약수 값이 number_2 의 약수가 되는지 보고 
//		조건이 만족한다면, 공약수로 본다.
//		공약수가 정해지면 그 공약수로 나눠주고 몫이 새로운 number1,2 값이 되고, 반복되는 공약수의 곱이 최대 공약수 이다.
//		처음의 초기값의 회전수가 되면, 전체 공약수의 곱과 나머지값이 남는데 최소공배수일때는 나머지 값이 필요하지만,
//		최대 공약수에서는 몫만 필요하다.
//		
//		위와 같이 코드를 작성했을때 초기값부터 소수가 들어오면 공약수 값이 1이 나오는데, 1은 피해야한다.
//		다음과 같이 발생하는 조건은 2개의 조건식이 모두 들어갔을때이다..
//		2개의 조건식으로 들어 갔다면 condition_ok 값을 변화 시키고, condition_ok 이 변화 하였다면,
//		조건식이 필요없이 바로 두 number1,2 값을 곱해주면 최대 공약수가 된다..				
		
		int number_1;
		int number_2;
		int number_1_head;
		int max_number = 1;
		int number_1_unchangeable;
		//int number_2_unchangeable;
		int condition_ok = 99999; // 시작 하자마자 소수 방지용..
		
		
		Scanner sc;
		sc = new Scanner(System.in);
		
		System.out.println("첫번째 숫자를 넣으세요..");
		number_1 = sc.nextInt();
		System.out.println("두번째 숫자를 넣으세요..");		
		number_2 = sc.nextInt();
		
		
		 number_1_unchangeable = number_1;
		 //number_2_unchangeable = number_2;
	
		
		//System.out.println(number_1);
		//System.out.println(number_2);
		
		 
		for (int i = 2; i <= number_1_unchangeable ; i++) { // 한쪽이 크던 작던, 소수값이 한쪽에서 나오면 더이상 나눠지지 않는다..
			if (number_1%i==0 ){ // 여기 조건에 들어가면, 합성수다
				number_1_head = i;
				//System.out.println(number_1_head);
				if (number_2%i==0) { // 여기 조건에 들어가면, 최대 공약수구나!!! 알았어 ㅎㅎㅎ
					System.out.println("두 조건 모두 충족");
					condition_ok = 0;
					System.out.println("1 회 이상 공약수 존재 : " + condition_ok);							
					max_number = max_number * number_1_head; // 최대 공약수를 더해주자.. 이제 나머지 값이 number_1, number_2 가 되겠지??				
					System.out.println("공약수 : " + number_1_head);
					number_1 = number_1 / number_1_head;
					number_2 = number_2 / number_1_head;
					i = 1; // 2가 또 나올수 있으니까 그리고, 4 소수가 아니에요...// ++i 때문에 1로 해서 2 가야함..
					System.out.println(number_1);
					System.out.println(number_2);
				}
			}
		}
		
		System.out.println("공약수가 없다..  : " + condition_ok);		
	    
		if (condition_ok ==0) { // 공약수 존재..
			System.out.println(max_number);
		}
		else { // 공약수 존재 하지 않음..
			max_number = number_1 * number_2;
			System.out.println(max_number);
		}
		
		
		
			
			
			
			
		 
/*		for (int i = 2; i <= number_1 ; i++) {
			if (number_1%i==0){ // 여기 조건에 들어가면, 합성수다
				number_1_head = number_1/i; // 이제 이 값이 numer_2로 나눠지는지 보자!!
				if (number_2%i==0) { // 여기 조건에 들어가면, 최대 공약수구나!!! 알았어 ㅎㅎㅎ
					max_number += number_1_head; // 최대 공약수를 더해주자.. 이제 나머지 값이 number_1, number_2 가 되겠지??
					
				}
				else{  // numer_1 은 되는데, numer_2가 안되는구나..}
			}
		}*/
		
		
		
		//System.out.println(number_1);
		//System.out.println(number_2);

	}

}
